Aplicando grafos en el analisis de relaciones

Francisco Catalán

21-09-2021

R

R es un lenguaje de programación con un enfoque al análisis estadístico ampliamente utilizado en ciencia de datos. Descargar.

Rstudio es un entorno de desarrollo integrado(IDE) para R que proporciona servicios integrales para facilitarle al desarrollador o programador el desarrollo de software. Descargar

Elementos en R

Variables

Para asignar variables utilizaremos “<-

x <- 4
class(x)
## [1] "numeric"
Etiqueta <- "Hola"
class(Etiqueta)
## [1] "character"
Logico <- TRUE
class(Logico)
## [1] "logical"

Elementos en R

Vectores

Es la estructura de dato mas básico en R y se define como un conjunto de elementos asignados a la función c()

v1 <- c(1,2,3,4)
class(v1)
## [1] "numeric"

R “obliga” a que todos los elementos de una misma estructura sean del mismo tipo de datos, a esta propiedad se le llama coerción.

v2 <- c(1,"Hola",TRUE)
class(v2)
## [1] "character"

logical < numeric < character

Elementos en R

Matrices

Las matrices y arrays pueden ser descritas como vectores multidimensionales. Al igual que un vector, únicamente pueden contener datos de un sólo tipo, pero además de largo, tienen más dimensiones.

a <- matrix(1:12, ncol = 4 , nrow = 3)
class(a)
## [1] "matrix" "array"
print(a)
##      [,1] [,2] [,3] [,4]
## [1,]    1    4    7   10
## [2,]    2    5    8   11
## [3,]    3    6    9   12

Bucle for

Un bucle for es la iteración repetitiva de un código un determinado número de veces.

    for(i in 1:10){
    #codigo
    }

Ejemplo:

b = 1
for(j in 1:10){
  b = b * j
}
print(paste("El factorial de 10 es: ", b))
## [1] "El factorial de 10 es:  3628800"

Otros bucles comunes son while y do while

Condicional

    if(Condicion 1){
    #codigo
    }else if(Condicion 2){
    #codigo
    }else{
    #codigo
    }

Funciones

funciones

    mifuncion <- function(argumento1, argumento2, …) { cuerpo resultado }

Ejemplo:

cv <- function(x){
  y <- sd(x)/mean(x)
  return(y)
}
cv(1:10)
## [1] 0.5504819

Grafos

Un grafo es una pareja de conjuntos (V, E) donde:

Grafo no dirigido

Grafos (matriz de adyacencia)

LLamamos matriz de adyacencia de G a la matriz nxn, A ={aij}

Grafo no dirigido

##    A B  C  D
## A  0 3 26 11
## B  3 0  0  0
## C 26 0  0  0
## D 11 0  0  0

Graficando matrices

Un diagrama de sankey trabaja de forma similar a un grafo sobre una matriz.

##   A B  C  D
## A 0 3 26 11
## B 0 0  0  0
## C 0 0  0  0
## D 0 0  0  0
sankey(B)

Diseñemos un algoritmo

  1. Ordenemos los datos.
  2. Diseñemos una matriz.
  3. Representemos la funcion.

El package “sankeydiagram” fue diseñado para trabajar con archivos CSV descargados desde la plataforma Swift:

PROBLEMA: CxF Y matrizRelacional son funciones muy específicas y la tabla de entrada requiere un formato especifico

Package sankeydiagram(instalación)

El package se puede descargar e instalar desde GitHub escribiendo en la consola de Rstudio:

    install.package("devtools")
    library(devtools)
    

    install_github("franciscoxaxo/sankeydiagram")
    library("sankeydiagram")

Ver en GitHub

Tratamiento de tablas

Para comenzar se necesita que los títulos de las 7 primeras columnas sean:

“ï..ActiveScreener.Id”, “Time.of.Screening”, “Title”, “Authors”, “Question”, “List.of.Reviewers”,“Answers”

Tratamiento de tablas

Para cargar la tabla utilizaremos la función read.csv():

    df <- read.csv(rutaDelArchivo, sep = ";", encoding = "UTF-8", na.string = "")

Utilizaremos la función CxF para ordenar esta tabla:

    CxF(df)

El nuevo archivo lucira más o menos así:

Tratamiento de tablas

Para cargar la nueva tabla utilizaremos nuevamente la función read.csv():

    df2 <- read.csv(rutaDelArchivo, sep = ";", encoding = "UTF-8")
    

Para transformarlo a matriz escojemos dos criterios de la columna Questions y utilizamos la funcion matrizRelacional:

    matriz <- matrizRelacional(df2, criterio1 = ####, criterio2 = ####)
    

Esta matriz puede ser representada utilizando la funcion sankey:

    sankey(matriz)